↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U71(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → U51(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → LESS_IN(X, Y)
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → U31(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U11(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → DELMIN_IN(Right, Y, Right1)
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U61(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U71(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → U51(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → LESS_IN(X, Y)
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → U31(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U11(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → DELMIN_IN(Right, Y, Right1)
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U61(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
DELMIN_IN(Y, tree(X, Left1, X2)) → DELMIN_IN(Y, Left1)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
LESS_IN → LESS_IN
LESS_IN → LESS_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PrologToPiTRSProof
U21(Left1, less_out(X)) → DELETE_IN(Left1)
DELETE_IN(tree(Y, Left, Right1)) → U41(Right1, less_in)
DELETE_IN(tree(Y, Left1, Right)) → U21(Left1, less_in)
U41(Right1, less_out(Y)) → DELETE_IN(Right1)
less_in → U7(less_in)
less_in → less_out(0)
U7(less_out(X)) → less_out(s(X))
less_in
U7(x0)
From the DPs we obtained the following set of size-change graphs:
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U71(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → U51(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → LESS_IN(X, Y)
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → U31(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U11(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → DELMIN_IN(Right, Y, Right1)
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U61(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → LESS_IN(Y, X)
LESS_IN(s(X), s(Y)) → U71(X, Y, less_in(X, Y))
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → U51(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → LESS_IN(X, Y)
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → U31(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U11(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
DELETE_IN(X, tree(X, Left, Right), tree(Y, Left, Right1)) → DELMIN_IN(Right, Y, Right1)
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U61(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
DELMIN_IN(tree(X, Left, X1), Y, tree(X, Left1, X2)) → DELMIN_IN(Left, Y, Left1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
DELMIN_IN(Y, tree(X, Left1, X2)) → DELMIN_IN(Y, Left1)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
LESS_IN(s(X), s(Y)) → LESS_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
LESS_IN → LESS_IN
LESS_IN → LESS_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
delete_in(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U4(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
U4(X, Y, Left, Right, Right1, less_out(Y, X)) → U5(X, Y, Left, Right, Right1, delete_in(X, Right, Right1))
delete_in(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U2(X, Y, Left, Right, Left1, less_in(X, Y))
U2(X, Y, Left, Right, Left1, less_out(X, Y)) → U3(X, Y, Left, Right, Left1, delete_in(X, Left, Left1))
delete_in(X, tree(X, Left, Right), tree(Y, Left, Right1)) → U1(X, Left, Right, Y, Right1, delmin_in(Right, Y, Right1))
delmin_in(tree(X, Left, X1), Y, tree(X, Left1, X2)) → U6(X, Left, X1, Y, Left1, X2, delmin_in(Left, Y, Left1))
delmin_in(tree(Y, void, Right), Y, Right) → delmin_out(tree(Y, void, Right), Y, Right)
U6(X, Left, X1, Y, Left1, X2, delmin_out(Left, Y, Left1)) → delmin_out(tree(X, Left, X1), Y, tree(X, Left1, X2))
U1(X, Left, Right, Y, Right1, delmin_out(Right, Y, Right1)) → delete_out(X, tree(X, Left, Right), tree(Y, Left, Right1))
delete_in(X, tree(X, Left, void), Left) → delete_out(X, tree(X, Left, void), Left)
delete_in(X, tree(X, void, Right), Right) → delete_out(X, tree(X, void, Right), Right)
U3(X, Y, Left, Right, Left1, delete_out(X, Left, Left1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left1, Right))
U5(X, Y, Left, Right, Right1, delete_out(X, Right, Right1)) → delete_out(X, tree(Y, Left, Right), tree(Y, Left, Right1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left1, Right)) → U21(X, Y, Left, Right, Left1, less_in(X, Y))
U21(X, Y, Left, Right, Left1, less_out(X, Y)) → DELETE_IN(X, Left, Left1)
U41(X, Y, Left, Right, Right1, less_out(Y, X)) → DELETE_IN(X, Right, Right1)
DELETE_IN(X, tree(Y, Left, Right), tree(Y, Left, Right1)) → U41(X, Y, Left, Right, Right1, less_in(Y, X))
less_in(s(X), s(Y)) → U7(X, Y, less_in(X, Y))
less_in(0, s(X)) → less_out(0, s(X))
U7(X, Y, less_out(X, Y)) → less_out(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
DELETE_IN(tree(Y, Left1, Right)) → U21(Y, Right, Left1, less_in)
DELETE_IN(tree(Y, Left, Right1)) → U41(Y, Left, Right1, less_in)
U41(Y, Left, Right1, less_out(Y)) → DELETE_IN(Right1)
U21(Y, Right, Left1, less_out(X)) → DELETE_IN(Left1)
less_in → U7(less_in)
less_in → less_out(0)
U7(less_out(X)) → less_out(s(X))
less_in
U7(x0)
From the DPs we obtained the following set of size-change graphs: